package com.me.jingdongshop.ui.view;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.me.jingdongshop.R;

/**
 * Created by Administrator on 2017/5/4.
 * 我的模块的条目:   喜欢宝贝        >
 */

public class UserCenterItemView extends LinearLayout implements View.OnClickListener {


    private TextView mTv_name;
    private View mInflate;

    public UserCenterItemView(Context context) {
        this(context, null, 0);

    }


    public UserCenterItemView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public UserCenterItemView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init(context, attrs);
    }


    /**
     * 找item布局，并设置自定义属性
     *
     * @param context 上下文
     * @param attrs   属性
     */
    private void init(Context context, AttributeSet attrs) {
        mInflate = View.inflate(context, R.layout.my_usercenter_item, null);

        addView(mInflate);

        //获取自定义的属性
        TypedArray obtainStyledAttrs = context.obtainStyledAttributes(
                attrs, R.styleable.Attrs_UserCenterItemView);
        //得到条目name属性
        String name_item = obtainStyledAttrs.getString(R.styleable.Attrs_UserCenterItemView_item_name);
        //得到条目右边img是否展示属性
        boolean img_item = obtainStyledAttrs.getBoolean(R.styleable.Attrs_UserCenterItemView_item_img, false);
        boolean line_item = obtainStyledAttrs.getBoolean(R.styleable.Attrs_UserCenterItemView_item_line, false);
        int color_black = obtainStyledAttrs.getColor(R.styleable.Attrs_UserCenterItemView_item_color, Color.GRAY);


        mTv_name = (TextView) mInflate.findViewById(R.id.name_usercenter_item);
        TextView tv_line = (TextView) mInflate.findViewById(R.id.name_usercenter_line);
        ImageView img_right = (ImageView) mInflate.findViewById(R.id.img_usercenter_item);

        //将属性设置进去控件
        setUsercenterItemNameText(name_item);
        mTv_name.setTextColor(color_black);


        // 判断如果img_item为true就显示这个view（ImageView）就显示
        img_right.setVisibility(img_item ? View.VISIBLE : View.GONE);
        tv_line.setVisibility(line_item ? View.VISIBLE : View.GONE);

        //条目点击事件
        mInflate.setOnClickListener(this);



    }

    /**
     * 自定义组合控件，对外提供一个更改文字的方法---因为使用这个自定义View就相当于这个对象，
     * 所以直接找到使用自定义View的控件就可以调用这个方法
     *
     * @param name_item 需要展示的文字
     */
    public void setUsercenterItemNameText(String name_item) {
        mTv_name.setText(name_item);

    }


    @Override
    public void onClick(View v) {
        //判断接口对象是不是null的，null的表明没有实现该接口
        if (itemListener != null) {
            //将当前点击item 的view通过接口回调传出去
            itemListener.onUserCenterItemClick(v);
        }

    }


//    ----------------item点击事件相关----------------------

    /**
     * 一个回调自定义item的点击事件的接口
     */
    public interface onUserCenterItemClickListener {
        void onUserCenterItemClick(View itemView);
    }


    private onUserCenterItemClickListener itemListener;

    /**
     * 外面实现这个接口传进来的对象--
     *
     * @param itemListener 接口对象
     */
    public void setOnItemClickListener(onUserCenterItemClickListener itemListener) {
        this.itemListener = itemListener;
    }

    /**
     * 通过某一个item调用此方法，使当前item隐藏或显示（ View.GONE  or  View.VISIBLE）---
     *         日，之前以为只有通过回调才能操作这里面的东西，没想到直接通过控件可以调用此方法
     *
     */
    public void isVisibilityItem(int isVisibility){
        mInflate.setVisibility(isVisibility);
    }

}



